Инструкция по управлению зонами ответственности при администрировании
---------------------------------------------------------------------

Аннотация
~~~~~~~~~

Назначение документа: Особенности распределения зон ответственности при администрировании в крупных организациях, делегирование полномочий по подразделениям, распределение зон ответственности при администрировании через группы безопасности, понятие типов администраторов и возможностей по администрированию, настройка пользовательских типов администраторов.

Введение
~~~~~~~~

Разграничение зон ответственности администраторов позволяет определять полномочия и/или зоны ответственности пользователей (администраторов ALD Pro), что обеспечивает удобство и информационную безопасность.

В ALD Pro реализованы следующие инструменты разграничения зон ответственности администраторов:

**Пользовательские роли** - создание пользовательских типов администратора, назначение их на пользователей и группы пользователей.

**Назначение типа администратора** - определение полномочий администраторов в соответствии с назначенным типом

**Политики повышения возможностей по администрированию (SUDO)** - возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение определённых программ без необходимости ввода своего пароля

**Политики доступа к узлу (HBAC)** - определение правил для настройки доступа пользователей или групп пользователей к определенным хостам с использованием определенных сервисов

Назначение типов администратора
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Модель ALD Pro для типа администратора
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Модель ALD Pro для типа администратора включает следующие сущности:

- **Разрешение** - право на выполнение операции/действия.
- **Возможности по администрированию** - “тематический” набор разрешений. Например, для управления группами пользователей необходимы разрешения на создание, удаление, редактирование группы пользователей. Эти три действия можно объединить в возможности по администрированию на управление группами пользователей. Аналогично можно создать возможности по администрированию на управление группами компьютеров.
- **Тип администратора** - набор возможностей по администрированию. Например, для выделенного типа, участники которой будут управлять только группами пользователей и группами компьютеров, можно назначить два вида возможностей (одна на управление группами пользователей, вторая - на управление группами компьютеров) вместо назначения множества разрешений на операции с группами, которые надо выбрать из большого общего списка разрешений.

.. note:: 

   Любые возможности при администрировании запрещают создание и работу с следующими пользователями и группами пользователей.

Пользователи:

.. code-block:: bash

   'root', 'daemon', 'bin', 'sys', 'sync', 'games', 'man', 'lp', 'mail', 'news', 'uucp', 'proxy', 'www-data', 'backup', 'list', 'irc', 'gnats', 'nobody', 'systemd-timesync', 'systemd-network', 'systemd-resolve', '_apt', 'messagebus', 'sshd', 'systemd-coredump', '_chrony', 'postgres', 'opendnssec', 'zabbix', '_rpc', 'statd', 'redis', 'sssd', 'custodia', 'dirsrv', 'bind', 'gluster', 'pkiuser', 'kdcproxy', 'ipaapi'

Группы пользователей:

.. code-block:: bash

   'root', 'daemon', 'bin', 'sys', 'adm', 'tty', 'disk', 'lp', 'mail', 'news', 'uucp', 'man', 'proxy', 'kmem', 'dialout', 'fax', 'voice', 'cdrom', 'floppy', 'tape', 'sudo', 'audio', 'dip', 'www-data', 'backup', 'operator', 'list', 'irc', 'src', 'gnats', 'shadow', 'utmp', 'video', 'sasl', 'plugdev', 'staff', 'games', 'users', 'nogroup', 'systemd-journal', 'systemd-timesync', 'systemd-network', 'systemd-resolve', 'crontab', 'input', 'kvm', 'render', 'netdev', 'messagebus', 'ssh', 'astra-admin', 'astra-console', 'systemd-coredump', 'softhsm', '_chrony', 'ssl-cert', 'postgres', 'opendnssec', 'zabbix', 'redis', 'rdma', 'sssd', 'custodia', 'dirsrv', 'bind', 'gluster', 'sambashare', 'winbindd_priv', 'pkiuser', 'kdcproxy', 'ipaapi'

Функция назначения типа администратора предназначена для предоставления списка разрешений, т.е. действий, доступных обладателю конкретного типа администратора. Набор разрешений логически объединен в возможности. Конкретный вид возможности позволяет управлять только заданной группой параметров.

По умолчанию наборы возможностей разграничены между следующими типами:

- предустановленная роль главного администратора;

- роли для администрирования подразделов портала управления;

- роль на чтение всего портала;

- роль регионального администратора.

У пользователей есть возможность создать свои типы администраторов с требуемыми наборами возможностей.

Список доступных опций для каждого типа содержится в разделе **Управление доменом — Роли и права доступа — Типы администратора в системе — Таблица соответствий «Возможность (Доступный раздел/подраздел) - Роль администратора»**

В ALD Pro реализован механизм суммирования типов, т.е. при назначении пользователю нескольких типов все доступные возможности и разрешения суммируются.

Учетная запись, которой не присвоен ни один системный тип, имеет доступ только к Личному кабинету и не может использовать другие функции Системы.

Тип главного администратора по умолчанию назначен учетной записи admin.

Кроме типов администратора в разделе представлены базовые типы FreeIPA:

- ALDPRO - CIFS server

- ALDPRO - Organization units

- ALDPRO - Organizational Units Service Account

- ALDPRO - RuPost Service Integrations

- ALDPRO - SaltStack Administrators

- ALDPRO - Service Role

- ALDPRO - Trusts Service Account

- Enrollment Administrator
  
- helpdesk

- Security Architect
  
- User Administrator

.. note:: 

   При назначении пользователю типа администратора для работы с порталом ALD Pro рекомендуется использовать типы, созданные пользователем, и типы с префиксом ALDPRO: предустановленный и пользовательские. Использование базовых типов FreeIPA без префекса ALDPRO не рекомендуется.

Для просмотра списка функций (возможностей при администрировании) доступных для конкретного типа администратора необходимо выбрать наименование необходимого типа, после чего, справа в связанной таблице отобразится перечень возможностей администратора (список разделов, подразделов ALD Pro, доступных для данного типа).

Управление типами администратора
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Управление типами администратора доступно:

- из карточки **роли администратора**;

- из **карточки пользователя**.

Управление типами администратора из карточки роли осуществляется в разделе **Управление доменом — Роли и права доступа — вкладка Роли в системе - карточка Роли**. На вкладке в списке **Выбранные пользователи** приведен список пользователей, наделенных данным типом администратора. Доступна опция настройки данного списка.

Управление типами администратора из карточки пользователя осуществляется в разделе **Пользователи и компьютеры — Пользователи — карточка Пользователя — вкладка Роли**. На вкладке задаются типы, которыми будет наделена учетная запись пользователя.

Политики повышения возможностей при администрировании (SUDO)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**Команда sudo** (Substitute User and do, дословно «подменить пользователя и выполнить») предоставляет возможность пользователям выполнять команды от имени суперпользователя root, либо других пользователей. Правила, используемые sudo для принятия решения о предоставлении доступа, находятся в файле ``/etc/sudoers`` (для редактирования файла можно использовать специальный редактор ``visudo``, запускаемый из командной строки без параметров, в том числе без указания пути к файлу); язык их написания и примеры использования подробно изложены в ``man sudoers``.

В большинстве случаев грамотная настройка sudo делает небезопасную работу от имени суперпользователя ненужной. Все действия оказываются выполнимы из-под аккаунта пользователя, которому разрешено использовать sudo без ограничений. Имеется возможность запрещать и разрешать определённым пользователям или группам выполнение конкретного набора программ, а также разрешить выполнение определённых программ без необходимости ввода своего пароля.

ALD Pro позволяет настраивать правила разрешения и запрета на использование sudo для пользователей и групп пользователей. В правилах могут задаваться:

- Пользователи (группы пользователей), к которым применяются правила;

- Команды (группы команд), которые можно (нельзя) выполнять этим пользователям с применением sudo;

- Компьютеры (группы компьютеров), на которых применяется правило;

- Опции команды sudo, использующиеся при применении правила.

При инициализации контроллера (реплики) FreeIPA или при вводе клиента в домен FreeIPA система автоматически конфигурируется так, чтобы команда sudo использовала доменную службу sssd как источник данных о разрешениях использования sudo. Эта конфигурация задается в файле ``/etc/nsswitch.conf``:

.. code-block:: bash

   sudoers: files sss

где:

files — использовать данные из локального файла ``/etc/sudoers``; sss — использовать данные, предоставленные службой ``sssd``.

Служба ``sssd``, в свою очередь, настроена таким образом, чтобы получать данные по правилам ``sudo`` от доменной службы каталогов (LDAP). Подробная информация по работе команды sudo приведена в справочной системе ``man sudo``, ``man sudoers``.

.. note:: 

   Правила sudo не могут применяться к встроенной доменной группе хостов ipaserver, т.к. эта группа не имеет свойства ``mepmanagedentry``, следовательно, не имеет в ``objectclass`` запись ``mepOriginEntry``, что необходимо для идентификации группы. Это является особенностью схемы в FreeIPA.

Служба ``sssd`` выполняет кеширование данных с периодом обновления по умолчанию 5400 секунд. Для немедленного применения правил sudo необходимо очистить кеш, выполнив на клиентской машине следующие команды:

.. code-block:: bash

   sudo systemctl stop sssd
   sudo rm /var/lib/sss/db/*
   sudo systemctl start sssd

Или воспользоваться инструментом ``sssctl``, входящим в пакет ``sssd-tools``:

.. code-block:: bash

   sudo sssctl cache-remove

Команды sudo
^^^^^^^^^^^^

В разделе Групповые политики — Политики повышения привилегий — вкладка Команды Sudo перечислены зарегистрированные команды Sudo, которые могут быть затронуты при создании правил Sudo. Регистрация команд Sudo осуществляется вручную.

Регистрация команды для использования в правилах sudo
'''''''''''''''''''''''''''''''''''''''''''''''''''''

Команды, которые будут далее использоваться в правилах sudo (т.е. которые далее могут выполняться от имени sudo указанными в правилах пользователями) должны быть зарегистрированы. Зарегистрировать можно любую команду, имеющуюся в системе, на которой будет применяться правило. Для регистрации:

1. Перейти в раздел Групповые политики — Политики повышения привилегий — вкладка Команды Sudo;

2. Кликнуть кнопку “+ Новая команда”;

3. В появившемся окне карточки команды Sudo:

   - Указать полный путь расположения команды, которая должна выполняться от имени sudo (например, текстовый редактор ``nano``, имеющий полный путь ``/usr/bin/nano``);
   - Узнать полный путь расположения команды можно командой ``which``, например ``which nano``

.. note::

   Пути расположения команд стандартны и обычно зависят от системы, однако в случае нестандартных системе может понадобиться получить пути на той машине, на которой будет применяться правило.

   - Опционально указать описание команды в произвольной форме.

.. figure:: responsibility_zones_2.png
   :name: responsibility_zones_2

   Новая команда sudo

- Для сохранения и редактирования вкладки Группы нажать “Сохранить”. В результате указанная команда будет добавлена в список зарегистрированных команд. Далее эту команду можно будет использовать в правилах ``sudo``.

- Во вкладке **Группы** опционально настроить список групп команд sudo, в которые должны быть включена вновь добавленная команда.

Группы команд Sudo
^^^^^^^^^^^^^^^^^^

В разделе **Групповые политики — Политики повышения привилегий — вкладка Группы команд Sudo** для удобства администратора возможно объединять несколько команд Sudo в группу.

Для создания новой группы команд Sudo необходимо нажать на кнопку **+ Новая группа**, будет выполнен переход в карточку новой группы. В карточке заполнить обязательное поле **Имя группы** и нажать кнопку **Сохранить**. Новая группа служб успешно создана, после чего доступен просмотр и настройка данной группы из ее карточки. Карточка группы содержит вкладки:

- **Основное** - отображается информация о группе команд Sudo: ее название и описание. Для редактирования доступно описание группы.

- **Команды** - осуществляется добавление команд Sudo в состав данной группы команд Sudo.

Для добавления команд Sudo в состав данной группы необходимо в списке **Все команды** отметить требуемые записи и перенести их в список **Выбранные команды**.

Создание правила sudo
^^^^^^^^^^^^^^^^^^^^^

Для создания нового правила sudo:

1. Перейти в раздел **Групповые политики — Политики повышения привилегий — вкладка Правила Sudo**.

2. Кликнуть кнопку **+ Новое правило**, будет выполнен переход в карточку нового правила.

3. В карточке на вкладке **Основное** заполнить обязательное поле **Имя правила**. Остальные вкладки станут доступны после сохранения правила.

Настройка параметров правила sudo
'''''''''''''''''''''''''''''''''

Настройка правила sudo осуществляется во вкладках:

- **Параметры** — параметры для команды sudo. Например, наиболее распространенная опция - не запрашивать пароль у пользователя при использовании команды sudo (опция “!authenticate”). Если в правиле указать эту опцию, то указанные в правиле команды можно будет выполнять через sudo без ввода пароля, если опция не используется - то потребуется ввести пароль пользователя, выполняющего команду. Полный список поддерживаемых параметров см. в справочной системе: man sudoers

- **Пользователи** — список пользователей и групп пользователей, которым разрешено применять sudo в соответствии с правилом. Можно разрешить применять правило всем пользователям (группам пользователей);

- **Компьютеры** — список узлов в домене, на которых применяется правило. Можно разрешить применять правило на всех узлах;

- **Команды Sudo** — команды, к которым применяется данное правило. Возможно “Разрешить” или “Запретить” выполнение команды или группы команд (порядок объединения команд в группы см. далее), также возможно разрешить выполнять все команды;

- **Запуск от имени** — от имени какого пользователя или группы пользователей (не root-пользователя) может быть выполнена команда. При добавлении группы пользователей в “Группы пользователей запуска от имени” для выполнения команды могут использоваться идентификаторы пользователей (UID) членов этой группы. При добавлении в “Группы запуска от имени” для выполнения команды могут использоваться GID этой группы.

После внесения изменений в правило следует убедиться, что все изменения сохранены (кнопка **Сохранить** в начале формы) и нажать эту кнопку для сохранения изменений если она доступна.

Удаление или отключение правила
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для удаления или отключения правила:

1. Выбрать из списка правило, которое необходимо отключить или удалить;

2. Для отключения правила нажать кнопку **Отключить**, для удаления — **Удалить**.

Политики доступа к узлу (HBAC)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

**HBAC** (Host-based access control) — набор правил для настройки доступа пользователей или групп пользователей к определенным хостам с использованием определенных сервисов. Например:

- ограничение доступа по ssh к контроллеру домена определенной локации только для группы администраторов этой локации;

- разрешение использовать только определенную службу для доступа определенным пользователям на определенных хостах.

.. note:: 

  - Правила предоставляют только разрешения доступа. Правила запрета доступа настроить невозможно.
  - В домене ALD Pro по умолчанию установлено правило ``allow_all``, которое после настройки и проверки своих правил следует отключить.
  - FreeIPA хранит основную группу пользователя в виде числового значения атрибута gidNumber. В связи с этим, правила HBAC могут ссылаться только на дополнительные группы пользователя, но не на его основную группу.

Службы HBAC
^^^^^^^^^^^

В разделе **Групповые политики — Политики доступа к узлу — вкладка Службы HBAC** перечислены службы и программы, которые могут быть затронуты при создании правил HBAC. Например, ``ftp, sshd, su, login``.

Администратор имеет возможность добавить любые необходимые службы.

Группы служб HBAC
^^^^^^^^^^^^^^^^^

В разделе **Групповые политики — Политики доступа к узлу — вкладка Группы служб HBAC** для удобства администратора возможно объединять несколько служб HBAC в группу.

Для создания новой группы служб необходимо нажать на кнопку **+ Новая группа**, будет выполнен переход в карточку новой группы. В карточке заполнить обязательное поле **Имя группы** и нажать кнопку **Сохранить**. Новая группа служб успешно создана, после чего доступен просмотр и настройка данной группы из ее карточки. Карточка группы содержит вкладки:

**Основное** - отображается информация о группе служб: ее название и описание. Для редактирования доступно описание группы.

**Службы** - осуществляется добавление служб HBAC в состав данной группы служб.

Для добавления служб HBAC в состав данной группы необходимо в списке **Все службы** отметить требуемые записи и перенести их в список **Выбранные службы**.

Добавление правила HBAC
^^^^^^^^^^^^^^^^^^^^^^^

В разделе **Групповые политики — Политики доступа к узлу — вкладка Правила HBAC** нажать кнопку **+ Новое правило**, откроется окно, в котором необходимо указать имя правила и нажать кнопку **Сохранить**. Новое правило успешно создано, после чего доступен просмотр и настройка данного правила из его карточки. Карточка правила содержит вкладки:

**Основное** - содержит информацию о правиле (название и описание) и опцию включения/отключения правила.

**Пользователи** - осуществляется настройка списка пользователей и/или групп пользователей, на которых будет применяться данное правило.

**Компьютеры** - осуществляется настройка списка рабочих станций и/или групп рабочих станций, на которые будет применяться данное правило.

**Службы HBAC** - осуществляется настройка списка служб и/или групп служб, использование которых будет регулироваться данным правилом.

Допускается указывать совместно пользователей и группы пользователей, компьютеры и группы компьютеров, службы и группы служб. При этом, если в группе находится только один элемент, и эта группа уже добавлена, то добавить этот элемент отдельно невозможно.

Отключение и удаление правила
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Для отключения правила HBAC необходимо перейти в карточку правила и выбрать **Выключено**.

Удаление правила HBAC доступно как из карточки правила так и из общего списка правил.

Для удаления правила HBAC из карточки необходимо перейти в карточку правила, кликнуть кнопку **Удалить правило** и подтвердить удаление.

Для удаления правила из списка необходимо перейти к списку правил, отметить чек-боксом правило (несколько правил) на удаление и кликнуть кнопку **Удалить**.